package Controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import Vista.JFrameCliente;
import Modelo.Cliente;
import Modelo.ClienteDAO;

public class ControladorJFrameCliente implements ActionListener
{
		private JFrameCliente ventanaCliente;
		public ControladorJFrameCliente() 
		{
			super();
			this.ventanaCliente = new JFrameCliente();
			this.ventanaCliente.addListener(this);
			this.ventanaCliente.setVisible(true);
		}
		@Override
		public void actionPerformed(ActionEvent e) 
		{
			String actionCommand = e.getActionCommand();
			if(actionCommand.equals("Registrar"))
			{
				RegistrarCliente();
			}
			else if (actionCommand.equals("Modificar"))
			{
				ModificarCliente();
			}
			else if (actionCommand.equals("Eliminar"))
			{
				EliminarCliente(BuscarCliente());
			}
			else if(actionCommand.equals("Limpiar"))
			{
				ventanaCliente.Blanquear();
				
			}
			else if(actionCommand.equals("Salir"))
			{
				ventanaCliente.setVisible(false);
			}
			else if(actionCommand.equals("Buscar"))
			{
				BuscarCliente();
			}
		}
		
		public Cliente BuscarCliente()
		{
			try
			{
				if(ventanaCliente.getCodCliente().equals(""))
				{
					ventanaCliente.MostrarMensaje("Debe ingresar el codigo del cliente");
				}
				else
				{
					ClienteDAO clienteDAO = new ClienteDAO();
					
					Cliente cli= clienteDAO.ConsultarCliente(ventanaCliente.getCodCliente());
					ventanaCliente.setCodCliente(cli.getCodCliente());
					ventanaCliente.setNombCliente(cli.getNombCliente());
					ventanaCliente.setApeCliente(cli.getApeCliente());
					ventanaCliente.setDireccion(cli.getDireccion());
					ventanaCliente.setTelefono(cli.getTlfCliente());
					ventanaCliente.Habilitar(true);
				
					return cli;
					
				}
			}
			catch (Exception e)
			{
				ventanaCliente.MostrarMensaje("El cliente indicado no se encuentra registrado");
				ventanaCliente.Blanquear();
				return null;
			}
			return null;
			
		}
		
		public void RegistrarCliente()
		{
			try
			{
				if(ventanaCliente.getCodCliente().equals("") || ventanaCliente.getNombCliente().equals("") || ventanaCliente.getApeCliente().equals("") || ventanaCliente.getDireccion().equals("") || ventanaCliente.getTelefono().equals("") )
				{
					ventanaCliente.MostrarMensaje("Deben ingresar todos los datos para agregar un Cliente");
				}
				else
				{
					ClienteDAO clienteDAO = new ClienteDAO();
					Cliente cliente = new Cliente(ventanaCliente.getCodCliente(),ventanaCliente.getNombCliente(),ventanaCliente.getApeCliente(),ventanaCliente.getDireccion(),ventanaCliente.getTelefono());
					//categoria.setStatus('A'); esto va en el dao en la tira sql
					clienteDAO.RegistrarCliente(cliente);
					ventanaCliente.MostrarMensaje("Cliente Agregado exitosamente!");
					ventanaCliente.Blanquear();
				}
			}
			catch (Exception e)
			{
				ventanaCliente.MostrarMensaje("No se pudo agregar la Categoria");
				ventanaCliente.Blanquear();
			}
			
		}
		public void ModificarCliente()
		{
			
			try
			{
				if(ventanaCliente.getCodCliente().equals("") || ventanaCliente.getNombCliente().equals("") || ventanaCliente.getApeCliente().equals("") || ventanaCliente.getDireccion().equals("") || ventanaCliente.getTelefono().equals("") )
				{
					ventanaCliente.MostrarMensaje("Deben ingresar todos los datos para agregar un Cliente");
				}
				else
				{
					ClienteDAO clienteDAO = new ClienteDAO();
					Cliente cliente = new Cliente(ventanaCliente.getCodCliente(),ventanaCliente.getNombCliente(),ventanaCliente.getApeCliente(),ventanaCliente.getDireccion(),ventanaCliente.getTelefono());
					//categoria.setStatus('A'); esto va en el dao en la tira sql
					clienteDAO.ModificarCliente(cliente);
					ventanaCliente.MostrarMensaje("Datos del Cliente modificados exitosamente!");
					ventanaCliente.Blanquear();
				}
			}
			catch (Exception e)
			{
				ventanaCliente.MostrarMensaje("No se pudo agregar la Categoria");
				ventanaCliente.Blanquear();
			}
		}
		public void EliminarCliente(Cliente cl)
		{
			try
			{
				if(ventanaCliente.getCodCliente().equals(""))
				{
					ventanaCliente.MostrarMensaje("Debe ingresar el codigo del cliente");
				}
				else
				{
					ClienteDAO clienteDAO = new ClienteDAO();
					
					
					Cliente cli= cl;
					
					clienteDAO.EliminarCliente(cli);
					ventanaCliente.MostrarMensaje("Cliente eliminado exitosamente!");
					ventanaCliente.Blanquear();
					ventanaCliente.Habilitar(false);
					ventanaCliente.Blanquear();
				}
			}
			catch (Exception e)
			{
				ventanaCliente.MostrarMensaje("El cliente indicado no se encuentra registrado");
				ventanaCliente.Blanquear();
			}

		}
		
		
}
